package com.kuang.controller;

import com.kuang.dao.DepartmentDao;
import com.kuang.dao.EmployeeDao;
import com.kuang.pojo.Department;
import com.kuang.pojo.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.Collection;

@Controller
public class EmployeeController {
    @Autowired//用于自动注入dao层的东西
    private EmployeeDao employeeDao;
    @Autowired
    private DepartmentDao departmentDao;

    @RequestMapping("/emps")
    public String list(Model model) {
        Collection<Employee> employees = employeeDao.getAll();
        model.addAttribute("emps", employees);
        return "emp/list";//controller返回的是一个视图页面
    }

    @GetMapping("/emp")
    public String toAddPage(Model model) {//请求返回一个添加员工的页面
        //在处理这个请求的时候，要查询出部门的所有信息
        Collection<Department> departments = departmentDao.getDepartments();
        model.addAttribute("departments", departments);

        return "emp/add";//这是处理/emp请求的方法，结果是返回到这个视图页面
    }

    @PostMapping("/emp")
    public String addEmp(Employee employee) {//提交表单来添加员工，添加成功后返回员工列表页面，刷新页面用重定向的方式
        //逻辑没有问题，现在写具体添加的操作，来保证确实添加员工成功

        System.out.println("DEBUG=======>" + employee.toString());
        employeeDao.save(employee);
        return "redirect:/emps";//重定向是客户端的行为  重定向到一个请求
    }

    //去员工的修改页面
    @GetMapping("/emp/{id}")
    public String toUpdateEmp(@PathVariable("id") Integer id, Model model) {
        //查出原来的数据
        Employee employee = employeeDao.getEmployeeById(id);
        model.addAttribute("emp", employee);
        //在处理这个请求的时候，要查询出部门的所有信息
        Collection<Department> departments = departmentDao.getDepartments();
        model.addAttribute("departments", departments);
        return "emp/update";//返回到一个视图页面
    }

    @PostMapping("/updateEmp")
    public String updateEmp(Employee employee) {
        System.out.println("【DEBUG】要修改的员工信息是=====》" + employee.toString());

        employeeDao.save(employee);
        return "redirect:/emps";
    }


    //删除员工的实现
    @GetMapping("/delemp/{id}")//URL是rest风格  体现一下
    public String deleteEmp(@PathVariable("id") int id) {
        System.out.println("【DEBUG】要删除的员工ID是=====》" + id);

        employeeDao.delete(id);
        return "redirect:/emps";

    }
}
